package com.tj.bo.user.server;

import com.tj.bo.user.client.UserCheckService;
import com.tj.bo.user.client.enums.UserRealFlagEnum;
import com.tj.bo.user.client.enums.UserRegisterTypeEnum;
import com.tj.bo.user.client.vo.output.UserAccessInfoRO;
import com.tj.bo.user.server.entity.UserAccessEntity;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;

import java.util.Date;

/**
 * Created with IntelliJ IDEA.
 * User: binary
 * Date: 2020/6/11
 * Time: 上午10:05
 */
@Service
public class UserCheckServiceImpl extends UserBaseService implements UserCheckService {

    @Override
    public boolean checkByRealToken(String realToken) {
        UserAccessEntity userAccessEntity = userAccessDao.selectUserAccessByToken(realToken);

        if (userAccessEntity == null) {
            return false;
        }
        if (userAccessEntity.getExpireDate().getTime() < new Date().getTime()) {
            return false;
        }

        return true;
    }

    /**
     * 检查设备号是否已注册
     *
     * @param appCode
     * @param deviceId
     * @return
     */
    @Override
    public boolean isDeviceRegistered(String appCode, String deviceId) {
        UserAccessEntity userAccessEntity = userAccessDao.selectUserAccessByLoginNumber(appCode, UserRealFlagEnum.DEMO.getType(), deviceId);

        if (userAccessEntity == null) {
            return false;
        }

        return true;
    }

    @Override
    public boolean isSocialRegistered(String appCode, UserRegisterTypeEnum registerType, String openId) {
        UserAccessEntity userAccessEntity = userAccessDao.selectUserAccessByLoginNumber(appCode, UserRealFlagEnum.REAL.getType(), openId);

        if (userAccessEntity == null) {
            return false;
        }

        return true;
    }

    @Override
    public boolean isEmailRegistered(String appCode, String email) {
        UserAccessEntity userAccessEntity = userAccessDao.selectUserAccessByLoginNumber(appCode, UserRealFlagEnum.REAL.getType(), email);

        if (userAccessEntity == null) {
            return false;
        }

        return true;
    }

    @Override
    public UserAccessInfoRO getUserAccessByEmail(String appCode, String email) {
        UserAccessEntity userAccessEntity = userAccessDao.selectUserAccessByLoginNumber(appCode, UserRealFlagEnum.REAL.getType(), email);
        UserAccessInfoRO userAccessInfo = null;
        if(userAccessEntity != null){
            userAccessInfo = new UserAccessInfoRO();
            BeanUtils.copyProperties(userAccessEntity, userAccessInfo);
        }
        return userAccessInfo;
    }

    @Override
    public UserAccessInfoRO getUserAccessByMobile(String appCode, String mobile) {
        UserAccessEntity userAccessEntity = userAccessDao.selectUserAccessByLoginNumberAndType(appCode, UserRealFlagEnum.REAL.getType(), mobile, UserRegisterTypeEnum.MOBILE.getType());
        UserAccessInfoRO userAccessInfo = null;
        if(userAccessEntity != null){
            userAccessInfo = new UserAccessInfoRO();
            BeanUtils.copyProperties(userAccessEntity, userAccessInfo);
        }
        return userAccessInfo;
    }
}
